import { loginApi, getInfoApi, getDetailUserInfoApi } from "@/api/user";
import { getToken, setToken, removeToken } from "@/utils/auth";
export default {
  // 开启模块化
  namespaced: true,
  state: {
    token: getToken(),
    userInfo: {},
  },
  mutations: {
    // 设置token
    setToken(state, data) {
      // 存入state
      state.token = data;
      // 存入cookie实现持久化
      setToken(data);
    },
    // 清除token
    removeToken(state) {
      state.token = null;
      removeToken();
    },
    // 设置用户资料
    setUserInfo(state, data) {
      state.userInfo = data;
    },
    // 删除用户资料
    removeUserInfo(state) {
      state.userInfo = {};
    },
  },
  actions: {
    // 发生请求请求的action
    async loginAction(context, data) {
      // data就是表格的数据
      // 发生请求了
      let res = await loginApi(data);
      // 触发mutation
      context.commit("setToken", res);
    },
    // 获取用户资料Action
    async getUserInfoAction(context) {
      // 发生请求
      let res = await getInfoApi();
      // 获取详细资料
      let res2 = await getDetailUserInfoApi(res.userId);
      // 触发mutation
      context.commit("setUserInfo", { ...res, ...res2 });
    },
    // 退出操作
    quitAction(context) {
      // 清除token
      context.commit("removeToken");
      // 清除用户资料
      context.commit("removeUserInfo");
    },
  },
};
